/**
 * uni-app 拦截器管理
 * 文档：https://uniapp.dcloud.net.cn/api/interceptor.html#addinterceptor
 */
import { useT } from '@/utils/i18n.js';

/**
 * 添加 switchTab 拦截器
 * @param {Object} options 拦截器配置选项
 * @param {Function} options.invoke - 拦截前触发，可以修改参数
 * @param {Function} options.success - 成功回调拦截
 * @param {Function} options.fail - 失败回调拦截
 * @param {Function} options.complete - 完成回调拦截
 * @param {Function} options.returnValue - 方法调用后触发，处理返回值
 */
export const addSwitchTabInterceptor = (options = {}) => {
  const { invoke, success, fail, complete, returnValue } = options;

  uni.addInterceptor('switchTab', {
    invoke(args) {
      // 拦截前触发，可以在这里修改参数或进行权限检查
      console.log('switchTab 拦截器 - invoke:', args);
      if (typeof invoke === 'function') {
        invoke(args);
      }
    },
    success(args) {
      // 成功回调拦截
      console.log('switchTab 拦截器 - success:', args);
      if (typeof success === 'function') {
        success(args);
      }
    },
    fail(err) {
      // 失败回调拦截
      console.log('switchTab 拦截器 - fail:', err);
      if (typeof fail === 'function') {
        fail(err);
      }
    },
    complete(res) {
      // 完成回调拦截
      console.log('switchTab 拦截器 - complete:', res);
      if (typeof complete === 'function') {
        complete(res);
      }
    },
    returnValue(args) {
      // 方法调用后触发，处理返回值
      if (typeof returnValue === 'function') {
        return returnValue(args);
      }
      return args;
    }
  });
};

/**
 * 移除 switchTab 拦截器
 */
export const removeSwitchTabInterceptor = () => {
  uni.removeInterceptor('switchTab');
};

/**
 * 初始化所有拦截器
 */
export const initInterceptors = () => {
  // 添加 switchTab 拦截器
  addSwitchTabInterceptor({
    invoke(args) {
      // 可以在这里添加权限检查、日志记录等
      console.log('准备切换 Tab:', args.url);

      // 检查是否跳转到 /pages/tabBar/link
      const targetUrl = args.url || '';
      // 处理不同的 URL 格式：/pages/tabBar/link 或 pages/tabBar/link
      const normalizedUrl = targetUrl.startsWith('/') ? targetUrl : `/${targetUrl}`;

      if (normalizedUrl === '/pages/tabBar/link') {
        // 阻止跳转：修改 URL 为当前页面路径
        const pages = getCurrentPages();
        if (pages.length > 0) {
          const currentPage = pages[pages.length - 1];
          const currentRoute = currentPage.route;
          // 修改 URL 为当前页面，阻止跳转
          args.url = `/${currentRoute}`;
        } else {
          // 如果没有当前页面，设置为首页
          args.url = '/pages/tabBar/home';
        }

        // 显示系统升级提示
        uni.showToast({
          title: useT('系统正在升级'),
          icon: 'none',
          duration: 2000
        });

        console.log('已阻止跳转到 /pages/tabBar/link，系统正在升级');
      }
    },
    success(args) {
      console.log('Tab 切换成功:', args);
    },
    fail(err) {
      console.error('Tab 切换失败:', err);
      uni.showToast({
        title: '页面跳转失败',
        icon: 'none'
      });
    },
    complete(res) {
      console.log('Tab 切换完成:', res);
    }
  });
};
